import {
	baseUrl
} from '@/config/config.js'

function check(type) {
	console.log("=====进入版本检测=====")
	// 合并默认参数
	let param = {
		title: "新版本更新",
		content: "请升级app到最新版本！",
		canceltext: "暂不升级",
		oktext: "立即升级"
	}

	plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
		let platform = plus.os.name.toLocaleLowerCase()
		// console.log("版本检测, 当前设备机型: {}, 当前设备版本号： {}", platform, widgetInfo.version);
		uni.$u.http.post(baseUrl + '/appVersion', {
			osType: platform,
			appVersion: widgetInfo.version
		}, {
			header: {
				'content-type': 'application/x-www-form-urlencoded'
			}
		}).then(function(res) {
			let data = res.data ? res.data : null;
			let flag = compareVersion(data.versionCode,widgetInfo.version);
			if (!flag) {
				if (type) {
					uni.$u.toast("当前版本已是最新版本")
				}
				this.$store.state.appVersion = widgetInfo.version;
				return;
			}
			
			//跳转至更新页
			if (res.code == 200) {
				// console.log("跳转至更新页 >>>>");
				if (platform == 'ios') {
					// 如果是ios,则跳转到appstore
					plus.runtime.openURL(data.downloadUrl)
					return;
				}
				uni.$u.route({
					url: 'pages/userCenter/update_popup',
					params: {
						isAppStore: data.isAppStore,
						versionCode: data.versionCode,
						isForced: data.isForced,
						versionDesc: data.versionDesc,
						downloadUrl: data.downloadUrl
					}
				})
			}
		})
	});
}


/**
 * 对比版本号，如需要，请自行修改判断规则
 * 支持比对	("3.0.0.0.0.1.0.1", "3.0.0.0.0.1")	("3.0.0.1", "3.0")	("3.1.1", "3.1.1.1") 之类的
 * @param {Object} appVersion 网络版本号
 * @param {Object} version	  本地版本号
 * @description 比较两个版本大小
 * 比较版本大小，如果网络版本号 appVersion 大于 本地版本号 version则返回true，否则返回false
 */
function compareVersion(appVersion, version) {
	//没有获取到版本号，直接不提示更新
	if (!appVersion || appVersion == '' || appVersion.length <= 0) {
		return false;
	}
	//获取本地版本号
	let v1 = String(version).split('.')
	let v2 = String(appVersion).split('.')
	
	//版本号长度不一致，直接提示更新
	if(v1.length !== v2.length){
		return true;
	}
	
	//长度一致，比较版本大小
	for (let i = 0; i < v1.length; i++) {
		const curV1 = Number(v1[i])
		const curV2 = Number(v2[i])
		if (curV1 < curV2) {
			return true;
		}
	}
	return false;
}
export default {
	check
}